//
//  AppDelegate.swift
//  MicroBlog
//
//  Created by lj on 15/8/31.
//  Copyright © 2015年 itcast. All rights reserved.
//

import UIKit
import AFNetworking

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        //打印账号信息
//        printLog(LSUserAccount.loadUserAccount())
        
        /// 注册通知  带参数的方法后面必须要加上“：”!!!
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "switchRootViewController:", name:LSSwitchRootViewControllerNotification, object: nil)
        
        setupNetwork()
        //设置外观
        setupAppearance()
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        
        //TODO:
        window?.rootViewController = defaultRootViewController()
        
        window?.backgroundColor = UIColor.whiteColor()
        
        window?.makeKeyAndVisible()
        
        return true
    }
    
    deinit {
        // 注销指定名称的通知，在程序被销毁的时候，才会被调用，可以省略！
        NSNotificationCenter.defaultCenter().removeObserver(self, name: LSSwitchRootViewControllerNotification, object: nil)
    }
    
    /// 切换控制器的通知监听方法
    func switchRootViewController(notifiction: NSNotification) {

        // 提示：在发布通知的时候
        // 如果只是传递消息，post name
        // 如果传递消息的同时，希望传递一个数值，可以通过 `object` 来传递值
        // 如果传递消息的同时，希望传递更多的内容，可以通过 userInfo 字典来传递
        
        window?.rootViewController = (notifiction.object == nil ) ? LSMainViewController() : LSWelcomeController()
    }
    
    /// 启动时默认的控制器
    private func defaultRootViewController() -> UIViewController {

        //是否登录
        if LSUserAccountViewModel.sharedUserAccountViewModel.userLogon {
          //是否是新版本
            return isNewVersion() ? LSNewFeatureController() : LSWelcomeController()
            
        }
        
        //没登录就返回
        return LSMainViewController()
    }
    
    /// 是否是新版本
    private func isNewVersion() -> Bool {
        
        // 获取当前的应用程序版本号
        let bundleVersion = Double(NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as! String)!
//        printLog("当前版本：\(bundleVersion)")
        
        // 2. 之前保存的程序版本号
        let versionKey = "MicroBlog.version"
        // 如果没有，返回0
        let saxboxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(versionKey)
//        printLog("之前保存的版本 \(saxboxVersion)")
        
        // 3. 保存当前版本
        NSUserDefaults.standardUserDefaults().setDouble(bundleVersion, forKey: versionKey)
        
        // 4. 比较两个版本，返回结果
        return bundleVersion > saxboxVersion
       
    }
    
    /// 设置网络指示器
    private func setupNetwork(){
        
        AFNetworkActivityIndicatorManager.sharedManager().enabled = true
        
        let cache = NSURLCache(memoryCapacity: 4*1024*1024, diskCapacity: 20*1024*1024, diskPath: nil)
        NSURLCache.setSharedURLCache(cache)
     
    }

    /**
    设置全局外观
    
    修改导航栏外观 - 修改要尽量早，一经设置，全局有效
    */
    private func setupAppearance() {
        
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        UITabBar.appearance().tintColor = UIColor.orangeColor()
        
    }

}

